"""
__author__ = '霍格沃兹测试开发学社'
__desc__ = '更多测试开发技术探讨，请访问：https://ceshiren.com/t/topic/15860'
"""
from typing import List

from do.testcase_do import TestcaseDo
from server import db_session


class TestcaseDao:

    def get(self, testcase_id) -> TestcaseDo:
        # 根据id返回数据
        return db_session.query(TestcaseDo).filter_by(id=testcase_id).first()

    def list(self) -> List[TestcaseDo]:
        # 返回所有
        return db_session.query(TestcaseDo).all()

    def save(self, testcase_do: TestcaseDo):
        # 新增数据
        db_session.add(testcase_do)
        db_session.commit()
        return testcase_do.id

    def update(self, testcase_do: TestcaseDo):
        # 修改数据
        db_session.query(TestcaseDo).filter_by(id=testcase_do.id).update(testcase_do.as_dict())
        db_session.commit()
        return testcase_do.id

    def delete(self, testcase_id):
        # 删除数据
        db_session.query(TestcaseDo).filter_by(id=testcase_id).delete()
        db_session.commit()
        return testcase_id

    def get_by_name(self, name) -> TestcaseDo:
        # 通过用例名称查询数据
        return db_session.query(TestcaseDo).filter_by(name=name).first()